home *** CD-ROM | disk | FTP | other *** search
-
-
-
- MMMMIIIIPPPPSSSS2222((((5555)))) MMMMIIIIPPPPSSSS2222((((5555))))
-
-
-
- NNNNAAAAMMMMEEEE
- mips2 - MIPS2 architecture extensions and the -mips2 compiler option
-
- SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS
- cccccccc ----mmmmiiiippppssss2222 [ options ] ... file ...
- ffff77777777 ----mmmmiiiippppssss2222 [ options ] ... file ...
- ppppcccc ----mmmmiiiippppssss2222 [ options ] ... file ...
- aaaassss ----mmmmiiiippppssss2222 [ options ] ... file ...
-
- DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
- The MIPS R4000 processor contains many instruction set extensions to the
- MIPS1 instruction set that was defined by the MIPS R2000/R3000. A subset
- of these instruction set extensions defines the MIPS2 instruction set and
- is accessible with the -mips2 option. The MIPS3 instruction set includes
- the remaining extensions and is described in mips3(5).
-
- The ----mmmmiiiippppssss2222 option is supported when compiling C, C++, Fortran, Pascal or
- Assembly language source files. It instructs the code generation phase to
- generate the MIPS2 instructions wherever beneficial. The option also
- causes the instruction scheduler phase to use the R4000 processor model
- while scheduling instructions. When linking, the ----mmmmiiiippppssss2222 option instructs
- the linker ld(1) to use MIPS2 specific versions of libraries from the
- directory /usr/lib/mips2.
-
- The new features added by the MIPS2 instruction set extensions are:
-
- o Double precision floating point load and store instructions. This
- can provide significant improvement to code using double precision
- floating point manipulation. A single instruction can load/store a
- double precision floating point value. In contrast, the R2000/R3000
- required using two instructions to reference the upper half and the
- lower half of the double precision value.
-
- o Intrinsic instructions to convert floating point numbers. The new
- instructions provide truncate, round, ceiling and floor operations.
- On the R2000/R3000, these instructions were implemented as assembler
- macros which expanded into approximately 11 instructions. Code which
- does significant amount of floating point to integer conversions
- should benefit from the ----mmmmiiiippppssss2222 option.
-
- o Floating point sqrt instruction. This is faster than the sqrt
- routine in the math libraries for the R2000/R3000.
-
- o Branch likely instructions. Every branch instruction in the MIPS1
- architecture has a corresponding branch likely form. In this form of
- the branch, the instruction in the delay slot of the branch is
- nullified if the conditional branch is not taken.
-
- o New compare and trap instructions, which cause an exception to be
- raised based on the result of comparing two registers or a register
- and immediate value. In the R2000/R3000, these instructions were
- implemented as assembler macros which expanded into a sequence using
-
-
-
- PPPPaaaaggggeeee 1111
-
-
-
-
-
-
- MMMMIIIIPPPPSSSS2222((((5555)))) MMMMIIIIPPPPSSSS2222((((5555))))
-
-
-
- a conditional branch and a break instruction.
-
- A special set of libraries compiled with the ----mmmmiiiippppssss2222 option and making use
- of MIPS2 features is provided in the /usr/lib/mips2 directory. As part of
- the basic development environment you get MIPS2 versions of libfastm.a,
- libm.a and libm43.a libraries. As part of the Fortran compiler you get
- MIPS2 versions of libF77.a, libI77.a, libU77.a and libisam.a . The
- shared library versions of the above Fortran libraries do not currently
- have a MIPS2 version.
-
- Code compiled and/or linked using the ----mmmmiiiippppssss2222 option will not run on
- R2000/R3000 based machines. Code compiled without the ----mmmmiiiippppssss2222 option will
- run on all machines -- R2000/R3000/R4000 -- within the constraints of
- operating system compatibility. If broad machine base compatibility is an
- issue, SGI recommends using the ----mmmmiiiippppssss2222 option only when significant
- benefit is achieved on an R4000 based system as compared to running the
- same program compiled without the ----mmmmiiiippppssss2222 option on the same R4000 based
- system.
-
- The double precision floating point load and store instructions require
- the data to be aligned on a double word boundary. A non-aligned access
- will cause the program to abort with a "bus error" message. This
- requirement may cause some programs that worked fine earlier, to fail
- when recompiled with the ----mmmmiiiippppssss2222 option. This can happen in some Fortran
- programs that have common blocks with an odd number of integer values
- followed by double precision data.
-
- SSSSEEEEEEEE AAAALLLLSSSSOOOO
- _A_s_s_e_m_b_l_y _L_a_n_g_u_a_g_e _P_r_o_g_r_a_m_m_e_r'_s _G_u_i_d_e
- _M_I_P_S _R_I_S_C _A_r_c_h_i_t_e_c_t_u_r_e, Gerry Kane and Joe Heinrich, Prentice Hall.
- _M_I_P_S _R_4_0_0_0 _U_s_e_r'_s _M_a_n_u_a_l, Joseph Heinrich, Prentice Hall.
- cc(1), f77(1), pc(1), CC(1), as(1), mips3(5)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- PPPPaaaaggggeeee 2222
-
-
-
-